package com.tiger.cloud.model.crm;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tiger.cloud.common.mybatis.TigerBaseEntity;
import com.tiger.cloud.enums.DeleteEnum;
import com.tiger.cloud.enums.RecommandListAcceptStatus;
import com.tiger.cloud.enums.RecommandListStatus;
import com.tiger.cloud.enums.ResourceTypeEnum;

import io.swagger.annotations.ApiModelProperty;

/**
 * 
 * crm_recommand_list-好友推荐、申请
 *
 */
public class RecommandList extends TigerBaseEntity {

	private static final long serialVersionUID = 1L;

	/**
	 * 添加/申请用户ID
	 */
	@ApiModelProperty(value = "添加/申请用户ID")
	private Long userId;
	
	/**
	 * 是否是通讯录请求
	 */
	private boolean hasAddressbook=false;
	
	/**
	 * 添加/申请用户ID
	 */
	@JsonIgnore
	private Long userIdOr;
	/**
	 * 添加/申请用户名称
	 */
	@ApiModelProperty(value = "添加/申请用户名称")
	private String userName;
	/**
	 * 头像
	 */
	@ApiModelProperty(value = "头像")
	private String headImage;
	/**
	 * 添加/申请用户ID
	 */
	@ApiModelProperty(value = "添加/申请用户手机号")
	private String userMobile;
	/**
	 * 添加/申请用户名称
	 */
	@ApiModelProperty(value = "添加/申请用户名称")
	private String recommandUserName;
	/**
	 * 头像
	 */
	@ApiModelProperty(value = "头像")
	private String recommandHeadImage;
	/**
	 * 添加/申请用户ID
	 */
	@ApiModelProperty(value = "添加/申请用户手机号")
	private String recommandUserMobile;
	/**
	 * 被推荐/申请的好友ID 如果是同行，此值为该同行的UserID，可能为空；如果为客户，此值为空
	 */
	@ApiModelProperty(value = "被推荐/申请的好友ID  如果是同行，此值为该同行的UserID，可能为空；如果为客户，此值为空")
	private Long recommandId;
	/**
	 * 被推荐/申请人姓名
	 */
	@ApiModelProperty(value = "被推荐/申请人姓名")
	private String recommandName;
	/**
	 * 被推荐/申请人手机号 用作匹配的key
	 */
	@ApiModelProperty(value = "被推荐/申请人手机号  用作匹配的key")
	private String recommandMobile;
	/**
	 * 1:同行、2:客户
	 */
	@ApiModelProperty(value = "1:同行、2:客户")
	private Integer type;
	/**
	 * 推荐方式 0:CRM用户匹配、1:扫码、2:手机通讯录
	 */
	@ApiModelProperty(value = "推荐方式  0:CRM用户匹配、1:扫码、2:手机通讯录")
	private ResourceTypeEnum recommandWay;
	
	/**
	 * 推荐来源 推荐人（好友ID、系统）,如果是系统推荐,这里填写空
	 */
	@ApiModelProperty(value = "推荐来源   推荐人（好友ID、系统）,如果是系统推荐,这里填写空")
	private Long resource;
	
	
	@JsonIgnore
	private List<RecommandListStatus> statusIn=new ArrayList<RecommandListStatus>();
	
	/**
	 * 推荐日期
	 */
	@ApiModelProperty(value = "推荐日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date recommandDate;
	/**
	 * 接受日期
	 */
	@ApiModelProperty(value = "接受日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date acceptDate;
	/**
	 * 
	 */
	@ApiModelProperty(value = "")
	private Timestamp  lastUpdateTime;
	/**
	 * 申请添加的消息
	 */
	@ApiModelProperty(value = "申请添加的消息")
	private String remark;
	/**
	 * 状态 0:待添加、1:已添加
	 */
	@ApiModelProperty(value = "状态  0:待添加、1:已添加 、2:待验证 ")
	private RecommandListStatus status;
	/**
	 * 状态 0:待接受、1:已接受
	 */
	@ApiModelProperty(value = "状态   0:待接受、1:已接受, 2:未接受")
	private RecommandListAcceptStatus acceptStatus;
	@JsonIgnore
	private List<RecommandListAcceptStatus> acceptStatusIn=new ArrayList<RecommandListAcceptStatus>();
	/**
	 * 
	 */
	@ApiModelProperty(value = "")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Timestamp  createTime;
	/**
	 * 添加方是否删除, 0:正常,1:删除
	 */
	@ApiModelProperty(value = "是否删除, 0:正常,1:删除")
	private DeleteEnum isDelete;
	/**
	 * 接收方是否删除, 0:正常,1:删除
	 */
	@ApiModelProperty(value = "是否删除, 0:正常,1:删除")
	private DeleteEnum acceptIsDelete;

	
	private String typeId;
	
	
	private Long provinceId; 
	private Long cityId;
	private Long districtId;
	
	public RecommandList() {

	}
	
	public String getTypeId() {
		return typeId;
	}

	public void setTypeId(String typeId) {
		this.typeId = typeId;
	}

	public Long getProvinceId() {
		return provinceId;
	}

	public void setProvinceId(Long provinceId) {
		this.provinceId = provinceId;
	}

	public Long getCityId() {
		return cityId;
	}

	public void setCityId(Long cityId) {
		this.cityId = cityId;
	}

	public Long getDistrictId() {
		return districtId;
	}

	public void setDistrictId(Long districtId) {
		this.districtId = districtId;
	}

	public String getRecommandUserName() {
		return recommandUserName;
	}

	public void setRecommandUserName(String recommandUserName) {
		this.recommandUserName = recommandUserName;
	}

	public String getRecommandHeadImage() {
		return recommandHeadImage;
	}

	public void setRecommandHeadImage(String recommandHeadImage) {
		this.recommandHeadImage = recommandHeadImage;
	}

	public String getRecommandUserMobile() {
		return recommandUserMobile;
	}

	public void setRecommandUserMobile(String recommandUserMobile) {
		this.recommandUserMobile = recommandUserMobile;
	}

	public DeleteEnum getAcceptIsDelete() {
		return acceptIsDelete;
	}

	public void setAcceptIsDelete(DeleteEnum acceptIsDelete) {
		this.acceptIsDelete = acceptIsDelete;
	}

	public String getHeadImage() {
		return headImage;
	}

	public void setHeadImage(String headImage) {
		this.headImage = headImage;
	}

	public List<RecommandListAcceptStatus> getAcceptStatusIn() {
		return acceptStatusIn;
	}

	public void setAcceptStatusIn(List<RecommandListAcceptStatus> acceptStatusIn) {
		this.acceptStatusIn = acceptStatusIn;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Long getUserIdOr() {
		return userIdOr;
	}

	public void setUserIdOr(Long userIdOr) {
		this.userIdOr = userIdOr;
	}

	public boolean isHasAddressbook() {
		return hasAddressbook;
	}

	public void setHasAddressbook(boolean hasAddressbook) {
		this.hasAddressbook = hasAddressbook;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserMobile() {
		return userMobile;
	}

	public void setUserMobile(String userMobile) {
		this.userMobile = userMobile;
	}

	public Long getUserId() {
		return this.userId;
	}

	public void setUserId(Long userId) {
		this.userId = userId;
	}

	public Long getRecommandId() {
		return this.recommandId;
	}

	public void setRecommandId(Long recommandId) {
		this.recommandId = recommandId;
	}

	public String getRecommandName() {
		return this.recommandName;
	}

	public void setRecommandName(String recommandName) {
		this.recommandName = recommandName;
	}

	public String getRecommandMobile() {
		return this.recommandMobile;
	}

	public void setRecommandMobile(String recommandMobile) {
		this.recommandMobile = recommandMobile;
	}

	public Integer getType() {
		return this.type;
	}

	public void setType(Integer type) {
		this.type = type;
	}

	public ResourceTypeEnum getRecommandWay() {
		return this.recommandWay;
	}

	public void setRecommandWay(ResourceTypeEnum recommandWay) {
		this.recommandWay = recommandWay;
	}

	public Long getResource() {
		return this.resource;
	}

	public void setResource(Long resource) {
		this.resource = resource;
	}

	public Date getRecommandDate() {
		return this.recommandDate;
	}

	public void setRecommandDate(Date recommandDate) {
		this.recommandDate = recommandDate;
	}

	public Date getAcceptDate() {
		return this.acceptDate;
	}

	public void setAcceptDate(Date acceptDate) {
		this.acceptDate = acceptDate;
	}

	public Timestamp  getLastUpdateTime() {
		return this.lastUpdateTime;
	}

	public void setLastUpdateTime(Timestamp  lastUpdateTime) {
		this.lastUpdateTime = lastUpdateTime;
	}

	public String getRemark() {
		return this.remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public RecommandListStatus getStatus() {
		return status;
	}

	public void setStatus(RecommandListStatus status) {
		this.status = status;
	}

	public RecommandListAcceptStatus getAcceptStatus() {
		return acceptStatus;
	}

	public void setAcceptStatus(RecommandListAcceptStatus acceptStatus) {
		this.acceptStatus = acceptStatus;
	}

	public Timestamp  getCreateTime() {
		return this.createTime;
	}

	public void setCreateTime(Timestamp  createTime) {
		this.createTime = createTime;
	}

	public DeleteEnum getIsDelete() {
		return this.isDelete;
	}

	public List<RecommandListStatus> getStatusIn() {
		return statusIn;
	}

	public void setStatusIn(List<RecommandListStatus> statusIn) {
		this.statusIn = statusIn;
	}

	public void setIsDelete(DeleteEnum isDelete) {
		this.isDelete = isDelete;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}